package com.hydra.base.utils;

import java.math.BigDecimal;

/**
 * 计算相关的工具类
 */
public class MathUtil {

    /**
     * 除法计算并返回结果
     */
    public static BigDecimal div(double a, double b, int scale){
        return div(new BigDecimal(a), new BigDecimal(b), scale);
    }

    /**
     * 除法计算并返回字符串结果
     */
    public static String divString(double a, double b, int scale){
        return div(a, b, scale).toPlainString();
    }

    /**
     * 除法计算，并保留N位小数
     */
    public static BigDecimal div(BigDecimal a, BigDecimal b, int scale){
        if(a == null || b == null){
            return BigDecimal.ZERO;
        }
        if(b.compareTo(BigDecimal.ZERO) == 0){
            return BigDecimal.ZERO;
        }
        return a.divide(b, scale, BigDecimal.ROUND_HALF_EVEN);
    }

    /**
     * 保留两位小数
     */
    public static BigDecimal round2(BigDecimal b){
        return round(b, 2);
    }

    /**
     * 保留N位小数
     */
    public static BigDecimal round(BigDecimal value, int scale){
        if(value == null){
            return BigDecimal.ZERO;
        }
        return value.divide(BigDecimal.ONE, scale, BigDecimal.ROUND_HALF_EVEN);
    }

}
